In recent times with the advent of more sophisticated computer and digital systems, various memory devices have been developed to enhance the versatility of computer networks and digital systems.
One of the more recent memory developments has been the type of memory designated as "flash memory".
The flash memory is a type of non-volatile memory which is very similar to EEPROM memory in function. EEPROM is the Electrical Erasable Programmable Read Only Memory which can be erased by applying an electrical signal to one or more of its pins. These occur as a type of chip which is useful for applications requiring storage that is stable for long periods of time without power, but additionally might also need to be reprogrammed from time to time, and this reprogramming can be done while the chip is still on the circuit board. However the reprogramming cycles are limited so that after a certain number of times the reprogramming is no longer useable due to a wearing out of the internal circuitry.
The flash memory is somewhat similar to the EEPROM memory in function. However, it must be erased in "blocks", while on the other hand the EEPROM can be erased one byte at a time.
Due to its block-oriented nature, a flash memory is often used as a supplement to or replacement for hard disks in portable computers.
Flash memory can be built into a unit or it can be made available as a printed circuit card that can be plugged into a slot in a digital module.
One singular disadvantage of the block-oriented nature of the flash memory is that an entire block must be erased and data rewritten to change any single byte of information.
However, flash memory is very useful since it is used by manufacturers and software publishers to distribute software which is either built into the system or installed on a printed circuit card. When the software is installed in a printed circuit card, it is further useful in that the software can be upgraded while in the field.
The flash memory, generally built on a chip, is a block-oriented non-volatile memory device which, however, has a limited life span of about 100,000 erase/write cycles for each block of memory. A chip may provide storage for several blocks of flash memory. When computer networks or digital modules use flash memory, a problem occurs in that when a flash memory is used, the usage will concentrate on a few of the blocks, generally the first few blocks in the flash memory address space and as a result, these blocks tend to be worn out well before all the other blocks have had a chance to be exercised and used.
As a result of this, flash memory useable size will be seen to shrink quickly and come to a point that failure occurs since there is an over-utilization of the first few blocks in the flash memory address space. As a result of this, a failure to write data will occur prematurely, thus presenting a minimum working space even while some of the flash memory blocks may still not have been used.
The presently described system functions to obviate the situation where the first few address space blocks of the flash memory are continually used and other blocks neglected. This is accomplished by ensuring that there is an equal distribution of usage of all of the memory blocks, rather than just a few in the early address areas. Thus, the present system may be seen to operate as a "wear leveling" fairness of usage scheme. Not only does the present system insure equal distribution of usage of flash memory blocks, but further provides for immediate and direct access by the microprocessor to the flash memory without need for intervening stages or special protocol arrangements which increase the overhead of the operations in accessing the flash memory system.